import 'dart:convert';
import 'dart:io';
import 'dart:math';

import 'package:dio/dio.dart';
import 'package:get/get.dart';

import '../../global/user/logic.dart';
import '../methodchannelmanager.dart';

/// @Author : 王亚东

/// @Time : On 2021/12/21 9:43

class TopDioIntercepter extends Interceptor {
  @override
  void onRequest(RequestOptions options, RequestInterceptorHandler handler) {
    // Do something before request is sent
    final user = UserController().state.user;
    options.headers = {
      "appCode": "jx-clivil-servant-assessment",
      "userId": user?.userId ?? '',
      "token": user?.token ?? '',
      "userName": user?.userName != null
          ? Uri.encodeComponent(user!.userName.toString())
          : '',
      "organId": user?.loginPostInfo?.orgId ?? '',
      "tenantId": user?.tenantId ?? '',
      "type": 1,
      // "roleId": user?.uiasRole.roleCode ?? '',
      // "ctimestamp": ctimestamp,
      // "cnonce": cnonce,
      // "csign": csign
    };

    Get.log('---header---' + jsonEncode(options.headers));
    return handler.next(options); //continue

    // 如果你想完成请求并返回一些自定义数据，你可以resolve一个Response对象 `handler.resolve(response)`。
    // 这样请求将会被终止，上层then会被调用，then中返回的数据将是你的自定义response.
    //
    // 如果你想终止请求并触发一个错误,你可以返回一个`DioError`对象,如`handler.reject(error)`，
    // 这样请求将被中止并触发异常，上层catchError会被调用。
  }

  String randomString(int len) {
    String charsAll = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
    /****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/
    var maxPos = charsAll.length;
    var pwd = '';
    for (int i = 0; i < len; i++) {
      pwd += charsAll[Random().nextInt(maxPos)];
    }
    return pwd;
  }
}
